When computer resources are shared, a scheduler assigns processes to one or more available processors or other resources. Typically, the scheduler assigns work, such as batch jobs, by matching job requirements with the capabilities and capacity of the resource(s). Traditionally, jobs have been assigned directly to physical resources, based on current utilization and fixed capacity. More recently, however, the physical resources are exposed through one or more resource containers (often referred to as “virtual machines”), each providing an abstraction of the underlying resources. The shared physical resources can include, for example, processing cores, storage systems, and network communication resources.
In a multi-container environment, the various containers share and compete for fixed physical resources, such as processor cycles, typically under the supervision of a container manager. The container manager typically assigns the physical resources to containers according to a set of rules or policies. The resource competition between containers adds even greater complexity to the scheduling problem. The evaluation of the resource capacity of the containers is a key step in any scheduling process. In addition, containers may be added, removed, suspended or brought online while work is executing. Planning these actions and assessing the impact on existing containers and jobs is also an important activity. In a multi-container environment, however, the evaluation of the resource capacity is challenging.
A need therefore exists for methods and apparatus for evaluating the resource capacity in a system of virtual containers. A further need exists for methods and apparatus for evaluating the dynamic resource capacity across all virtual containers sharing physical capacity.